package com.xoa.dev.pz.service.impl;

import com.xoa.dev.pz.dao.PzPersonServiceMapper;
import com.xoa.model.enclosure.Attachment;
import com.xoa.dev.pz.model.PzPersonServiceWithBLOBs;
import com.xoa.model.users.Users;
import com.xoa.service.users.UsersService;
import com.xoa.util.GetAttachmentListUtil;
import com.xoa.util.ToJson;
import com.xoa.util.common.StringUtils;
import com.xoa.util.common.session.SessionUtils;
import com.xoa.util.page.PageParams;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by gsb on 2017/11/30.
 */
@Service
public class PzPersonServerService {

    @Resource
    private PzPersonServiceMapper pzPersonServiceMapper;

    @Resource
    private UsersService usersService;

    /**
     * 创建作者:   季佳伟
     * 创建日期:   2017年11月30日 上午10:30:00
     * 方法介绍:   添加特殊人群服务
     * 参数说明:
     * 返回值说明:
     */
    public ToJson<PzPersonServiceWithBLOBs> insertSelective(PzPersonServiceWithBLOBs pzPersonServiceWithBLOBs){
        ToJson<PzPersonServiceWithBLOBs> json = new ToJson<PzPersonServiceWithBLOBs>();
        try {
            int count = pzPersonServiceMapper.insertSelective(pzPersonServiceWithBLOBs);
            if (count > 0) {
                json.setFlag(0);
                json.setMsg("ok");
            }

        }catch (Exception e){
            e.printStackTrace();
            json.setMsg(e.getMessage());
            json.setFlag(1);
        }
        return json;
    }
    /**
     * 创建作者:   季佳伟
     * 创建日期:   2017年11月30日 上午10:35:00
     * 方法介绍:   修改特殊人群服务
     * 参数说明:
     * 返回值说明:
     */
    public ToJson<PzPersonServiceWithBLOBs> updateByPrimaryKeySelective(PzPersonServiceWithBLOBs pzPersonServiceWithBLOBs){
        ToJson<PzPersonServiceWithBLOBs> json = new ToJson<PzPersonServiceWithBLOBs>();
        try {
            int count = pzPersonServiceMapper.updateByPrimaryKeySelective(pzPersonServiceWithBLOBs);
            if (count > 0) {
                json.setFlag(0);
                json.setMsg("ok");
            }
        }catch (Exception e){
            e.printStackTrace();
            json.setMsg(e.getMessage());
            json.setFlag(1);
        }
        return json;

    }
    /**
     * 创建作者:   季佳伟
     * 创建日期:   2017年11月30日 上午10:50:00
     * 方法介绍:   删除特殊人群服务
     * 参数说明:
     * 返回值说明:
     */
    public ToJson<PzPersonServiceWithBLOBs> deleteByPrimaryKey(Integer sid){
        ToJson<PzPersonServiceWithBLOBs> json = new ToJson<PzPersonServiceWithBLOBs>();
        try {
            int count = pzPersonServiceMapper.deleteByPrimaryKey(sid);
            if (count > 0) {
                json.setFlag(0);
                json.setMsg("ok");
            }
        }catch (Exception e){
            e.printStackTrace();
            json.setMsg(e.getMessage());
            json.setFlag(1);
        }
        return json;

    }
    /**
     * 创建作者:   季佳伟
     * 创建日期:   2017年11月30日 上午11:40:00
     * 方法介绍:   特殊人群服务详情
     * 参数说明:
     * 返回值说明:
     */
    public ToJson<PzPersonServiceWithBLOBs> selectById(int sid, HttpServletRequest request){
        ToJson<PzPersonServiceWithBLOBs> json = new ToJson<PzPersonServiceWithBLOBs>();
        try {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("sid", sid);
            PzPersonServiceWithBLOBs pzPersonServiceWithBLOBs = pzPersonServiceMapper.selectById(map);
            if(pzPersonServiceWithBLOBs != null && !StringUtils.checkNull(pzPersonServiceWithBLOBs.getGridUser())){
                pzPersonServiceWithBLOBs.setgUserName(usersService.getUserNameById(pzPersonServiceWithBLOBs.getGridUser()));
            }
            //附件处理
            List<Attachment> attachmentList=new ArrayList<Attachment>();
            if(pzPersonServiceWithBLOBs.getAttachmentName()!=null&&!"".equals(pzPersonServiceWithBLOBs.getAttachmentName())){
                attachmentList= GetAttachmentListUtil.returnAttachment(pzPersonServiceWithBLOBs.getAttachmentName(),pzPersonServiceWithBLOBs.getAttachmentId(),"xoa" + (String) request.getSession().getAttribute("loginDateSouse"), GetAttachmentListUtil.MODULE_PZ_PERSONSERVICE);
            }
            pzPersonServiceWithBLOBs.setAttachmentList(attachmentList);
            json.setObject(pzPersonServiceWithBLOBs);
            json.setFlag(0);
            json.setMsg("ok");
        }catch (Exception e){
            e.printStackTrace();
            json.setMsg(e.getMessage());
            json.setFlag(1);
        }
        return json;
    }

    /**
     * 创建作者:   季佳伟
     * 创建日期:   2017年11月30日 上午10:50:00
     * 方法介绍:   特殊人群服务列表
     * 参数说明:
     * 返回值说明:
     */
    public ToJson<PzPersonServiceWithBLOBs> queryService(Integer page, Integer pageSize, boolean useFlag,
                                                         PzPersonServiceWithBLOBs pzPersonServiceWithBLOBs, HttpServletRequest request){
        ToJson<PzPersonServiceWithBLOBs> json = new ToJson<PzPersonServiceWithBLOBs>();
        try {
            PageParams pageParams = new PageParams();
            pageParams.setPage(page);
            pageParams.setPageSize(pageSize);
            pageParams.setUseFlag(useFlag);
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("page", pageParams);
            Users users= SessionUtils.getSessionInfo(request.getSession(),Users.class,new Users());
            pzPersonServiceWithBLOBs.setGridUser(users.getUserId());
            map.put("pzPersonServiceWithBLOBs",pzPersonServiceWithBLOBs);
            List<PzPersonServiceWithBLOBs> pzPersonServiceWithBLOBsList = pzPersonServiceMapper.queryService(map);
            for (PzPersonServiceWithBLOBs service : pzPersonServiceWithBLOBsList){
                if(service != null && !StringUtils.checkNull(service.getGridUser())){
                    service.setgUserName(usersService.getUserNameById(service.getGridUser()));
                }
            }
            json.setObj(pzPersonServiceWithBLOBsList);
            json.setTotleNum(pzPersonServiceMapper.queryServiceCount(pzPersonServiceWithBLOBs));
            json.setFlag(0);
            json.setMsg("ok");

        }catch (Exception e){
            e.printStackTrace();
            json.setMsg(e.getMessage());
            json.setFlag(1);
        }
        return json;
    }

    /**
     * 创建作者:   牛江丽
     * 创建日期:   2017年12月20日 上午14:48:00
     * 方法介绍:   特殊人群服务列表，根据人员和特殊人群类别查询服务
     * 参数说明:
     * 返回值说明:
     */
    public ToJson<PzPersonServiceWithBLOBs> selSerByFlag(Integer page, Integer pageSize, boolean useFlag, PzPersonServiceWithBLOBs pzPersonServiceWithBLOBs){
        ToJson<PzPersonServiceWithBLOBs> json = new ToJson<PzPersonServiceWithBLOBs>();
        try {
            PageParams pageParams = new PageParams();
            pageParams.setPage(page);
            pageParams.setPageSize(pageSize);
            pageParams.setUseFlag(useFlag);
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("page", pageParams);
            map.put("pzPersonServiceWithBLOBs",pzPersonServiceWithBLOBs);
            List<PzPersonServiceWithBLOBs> list=pzPersonServiceMapper.selSerByFlag(map);
            for (PzPersonServiceWithBLOBs service : list){
                if(service != null && !StringUtils.checkNull(service.getGridUser())){
                    service.setgUserName(usersService.getUserNameById(service.getGridUser()));
                }
            }
            json.setTotleNum(pageParams.getTotal());
            json.setObj(list);
            json.setFlag(0);
            json.setMsg("ok");
        }catch (Exception e){
            e.printStackTrace();
            json.setMsg(e.getMessage());
            json.setFlag(1);
        }
        return json;
    }



    }
